package com.hfy.pcberpbackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hfy.pcberpbackend.entity.Customer;
import com.hfy.pcberpbackend.dto.CustomerQueryDTO;
import com.hfy.pcberpbackend.common.PageResult;

import java.util.List;

/**
 * 客户Service接口
 */
public interface CustomerService extends IService<Customer> {
    
    /**
     * 分页查询客户列表
     */
    PageResult<Customer> getCustomerPage(CustomerQueryDTO query);
    
    /**
     * 根据ID获取客户详情
     */
    Customer getCustomerById(Long id);
    
    /**
     * 新增客户
     */
    Long createCustomer(Customer customer);
    
    /**
     * 更新客户信息
     */
    void updateCustomer(Long id, Customer customer);
    
    /**
     * 删除客户
     */
    void deleteCustomer(Long id);
    
    /**
     * 批量删除客户
     */
    void batchDeleteCustomers(List<Long> ids);
    
    /**
     * 检查客户代码是否存在
     */
    boolean isCustomerCodeExists(String customerCode, Long excludeId);
    
    /**
     * 模糊搜索客户
     * @param keyword 关键词（客户代码、客户名称或公司名称）
     * @param size 返回结果数量限制
     * @return 客户列表
     */
    List<Customer> searchCustomers(String keyword, Integer size);
    
    /**
     * 根据客户代码获取客户详情
     * @param customerCode 客户代码
     * @return 客户信息
     */
    Customer getCustomerByCode(String customerCode);
} 